package com.xzj.common.id.gen;

import com.xzj.common.id.domain.IdGeneratorOptions;

/**
 * @program: xzj-common
 * @ClassName: TestGen
 * @description: 测试
 * @author: XiaZunJun
 * @create: 2024-07-29 14:16
 */
public class TestGen {

    /**
     * 测试结果：
     * (1)：1W并发，方法 1只要 1ms.而方法 2 要 180ms。
     * (2)：5W并发，方法 1只要 3ms.而方法 2 要 900ms。
     * [不同CPU可能结果有差异，但相对大小不变]
     * 默认配置下，最佳性能是5W/s-8W/s
     */
    final static int genIdCount = 500000;

    //1-漂移算法，2-传统算法
    final static short method = 1;

    public static void main(String[] args) {
        IdGeneratorOptions options = new IdGeneratorOptions();
        options.SeqBitLength = 10; // 默认6
        options.Method=method;
        options.WorkerId = 1;
        // options.TopOverCostCount=2000;

        // 首先测试一下 IdHelper 方法，获取单个Id
        IdHelper.setIdGenerator(options);
        long newId = IdHelper.nextId();
        System.out.println("=====================================");
        System.out.println("这是用方法 " + method + " 生成的 Id：" + newId);
        for(int i=0; i<genIdCount; i++){
            System.out.println(IdHelper.nextId());
        }
    }

}
